package com.itany.corejava.code08_常用类.string;

import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Arrays;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月10日 14:53
 */
public class Test08_字符集 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        // showEncoding();
        // encoded();
        // decoeded();
        // test();
        test2();
        // test3();
    }
    public static void showEncoding(){

        // 当前系统所使用的字符集
        System.out.println("当前系统所使用的字符集为:"+System.getProperty("file.encoding"));

        //JVM默认使用的字符集即为当前系统的字符集
        System.out.println("JVM默认使用的字符集:"+ Charset.defaultCharset());
    }

    //编码
    public static void encoded() throws UnsupportedEncodingException {
        String s="您好";
        byte[] bytes=s.getBytes("GBK");
        System.out.println(Arrays.toString(bytes));//[-60, -6, -70, -61]
        byte[] bytes2=s.getBytes("UTF-8");//[-26, -126, -88, -27, -91, -67]
        System.out.println(Arrays.toString(bytes2));
    }

    //解码
    public static void decoeded() throws UnsupportedEncodingException {
        byte[] bytes={-60, -6, -70, -61};

        //使用GBK进行解码
        String s=new String(bytes,"GBK");
        System.out.println(s);


        byte[] bytes2={-26, -126, -88, -27, -91, -67};

        //使用GBK进行解码
        String s2=new String(bytes2,"UTF-8");
        System.out.println(s2);

    }
    public static void test() throws UnsupportedEncodingException {
        String s="您好";
        byte[] bytes=s.getBytes("GBK");

        String s2=new String(bytes,"ISO-8859-1");//由于编码解码所采用的的规则不一样，所以会出现乱码
        System.out.println(s2);

        // 乱码的解决方式
        // 由于解码的方式ISO-8859-1，与编码的字符集不一样
        // 则可以重新编码，编码时采用之前解码时所采用的编码
        byte[] byte2=s2.getBytes("ISO-8859-1");
        System.out.println(Arrays.toString(byte2));

        //此时获取的字节数组即为第一次编码后的数组
        String s3=new String(bytes,"GBK");
        System.out.println(s3);

    }
    public static void test2() throws UnsupportedEncodingException {
        String s="您好";
        byte[] bytes=s.getBytes("GBK");//4个字节编码
        System.out.println(Arrays.toString(bytes));
        String s2=new String(bytes,"UTF-8");//解码
        System.out.println(s2);

        byte[] bytes1=s2.getBytes("UTF-8");
        System.out.println(Arrays.toString(bytes1));
        String s3=new String(bytes,"GBK");
        System.out.println(s3);



    }
    public static void test3() throws UnsupportedEncodingException {
        String s="您好哈";
        byte[] bytes=s.getBytes("UTF-8");//9个字节
        System.out.println(Arrays.toString(bytes));
        String s2=new String(bytes,"GBK");
        System.out.println(s2);
        byte[] byte2=s2.getBytes("GBK");
        System.out.println(Arrays.toString(byte2));
        String s3=new String(byte2,"UTF-8");
        System.out.println(s3);
    }

}
